当前位置: 首页 > news >正文

亚马逊店铺网站建设费用3d网页游戏开服表

亚马逊店铺网站建设费用,3d网页游戏开服表,优书网下载,指数运算法则1、前言 很久没写ArcEngine的内容了#xff0c;正好这次有同志提了一个问题#xff1a;如何用ArcEngine实现批量提取面要素之间的公共边#xff1f;捣鼓了半天总算是解决了#xff0c;下面就来说一说解决思路。 2、ArcMap的实现方法 首先准备一份测试数据#xff0c;如…1、前言 很久没写ArcEngine的内容了正好这次有同志提了一个问题如何用ArcEngine实现批量提取面要素之间的公共边捣鼓了半天总算是解决了下面就来说一说解决思路。 2、ArcMap的实现方法 首先准备一份测试数据如下图所示 提取公共边用ArcMap做非常简单只需要打开Analysis Tools下的Intersect相交工具将Output Type设置为LINE运行工具马上就能得到面要素的公共边。如下图所示 结果如下图所示 3、方法一调用GP提取公共边 既然已经知道了在ArcMap中如何使用Intersect工具来提取公共边那么我们就可以在ArcEngine中调用GP工具来实现。不过需要注意ArcEngine代码初始化时需要设置License的权限代码如下 using ESRI.ArcGIS.Geoprocessor; using System; using System.Windows.Forms;namespace App {public partial class MainForm : Form{public MainForm(){InitializeComponent();}private void btn_Click(object sender, EventArgs e){// 设置参数ESRI.ArcGIS.AnalysisTools.Intersect tool new ESRI.ArcGIS.AnalysisTools.Intersect();tool.in_features C:\Users\Virtual\Desktop\data\面.shp;tool.output_type LINE;tool.out_feature_class C:\Users\Virtual\Desktop\data\线.shp;// 执行GPGeoprocessor gp new Geoprocessor();gp.OverwriteOutput true;gp.Execute(tool, null);}} }运行结果如下图所示 4、方法二根据空间关系及拓扑工具提取公共边 获取两个面之间的公共边分以下两步 利用IRelationalOperator判断两个Polygon是否为Touches关系如果是Touches关系利用ITopologicalOperator的Intersect方法提取相交部分即可 代码如下 using ESRI.ArcGIS.DataSourcesFile; using ESRI.ArcGIS.Geodatabase; using ESRI.ArcGIS.Geometry; using System; using System.Collections.Generic; using System.Windows.Forms;namespace App {public partial class MainForm : Form{public MainForm(){InitializeComponent();}private void btn_Click(object sender, EventArgs e){IFeatureClass pFeatureClass GetFeatureClass(C:\Users\Virtual\Desktop\data\面.shp);ListIPolygon polygons GetPolygonList(pFeatureClass);ListIPolyline polylines GetPolylineList(polygons);CreateFeatureClass(polylines, C:\Users\Virtual\Desktop\data\线.shp);}// 获取要素类private IFeatureClass GetFeatureClass(string filePath){IWorkspaceFactory pWorkspaceFactory new ShapefileWorkspaceFactory();IWorkspaceFactoryLockControl pWorkspaceFactoryLockControl pWorkspaceFactory as IWorkspaceFactoryLockControl;if (pWorkspaceFactoryLockControl.SchemaLockingEnabled){pWorkspaceFactoryLockControl.DisableSchemaLocking();}IWorkspace pWorkspace pWorkspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(filePath), 0);IFeatureWorkspace pFeatureWorkspace pWorkspace as IFeatureWorkspace;IFeatureClass pFeatureClass pFeatureWorkspace.OpenFeatureClass(System.IO.Path.GetFileName(filePath));return pFeatureClass;}// 获取Polygon集合private ListIPolygon GetPolygonList(IFeatureClass pFeatureClass){IFeatureCursor pFeatureCursor pFeatureClass.Search(null, true);IFeature pFeature pFeatureCursor.NextFeature();if (pFeature null){return null;}// 遍历游标ListIPolygon list new ListIPolygon();while (pFeature ! null){list.Add(pFeature.ShapeCopy as IPolygon);pFeature pFeatureCursor.NextFeature();}// 返回System.Runtime.InteropServices.Marshal.ReleaseComObject(pFeatureCursor);return list;}// 获取Polyline集合private ListIPolyline GetPolylineList(ListIPolygon polygons){ListIPolyline list new ListIPolyline();for (int i 0; i polygons.Count; i){for (int j 0; j polygons.Count; j){if (i j){continue;}IRelationalOperator pRelationalOperator polygons[i] as IRelationalOperator;if (pRelationalOperator.Touches(polygons[j])){ITopologicalOperator pTopologicalOperator polygons[i] as ITopologicalOperator;IGeometry pIntersectGeometry pTopologicalOperator.Intersect(polygons[j], esriGeometryDimension.esriGeometry1Dimension);list.Add(pIntersectGeometry as IPolyline);}}}return list;}// 创建要素类private IFeatureClass CreateFeatureClass(ListIPolyline polylines, string filePath){// 设置空间参考IGeometryDef pGeometryDef new GeometryDef();IGeometryDefEdit pGeometryDefEdit pGeometryDef as IGeometryDefEdit;pGeometryDefEdit.GeometryType_2 esriGeometryType.esriGeometryPolyline;pGeometryDefEdit.HasM_2 false;pGeometryDefEdit.HasZ_2 false;pGeometryDefEdit.SpatialReference_2 axMapControl1.SpatialReference;// 字段集合IFields pFields new Fields();IFieldsEdit pFieldsEdit pFields as IFieldsEdit;// ShapeIField pField new Field();IFieldEdit pFieldEdit pField as IFieldEdit;pFieldEdit.Type_2 esriFieldType.esriFieldTypeGeometry;pFieldEdit.GeometryDef_2 pGeometryDef;pFieldEdit.AliasName_2 Shape;pFieldEdit.Name_2 Shape;pFieldEdit.IsNullable_2 false;pFieldEdit.Required_2 true;pFieldsEdit.AddField(pField);// 创建要素类IWorkspaceFactory pWorkspaceFactory new ShapefileWorkspaceFactory();IWorkspace pWorkspace pWorkspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(filePath), 0);IFeatureWorkspace pFeatureWorkspace pWorkspace as IFeatureWorkspace;IFeatureClass pFeatureClass pFeatureWorkspace.CreateFeatureClass(System.IO.Path.GetFileName(filePath), pFields, null, null, esriFeatureType.esriFTSimple, Shape, );// 要素游标IFeatureBuffer pFeatureBuffer pFeatureClass.CreateFeatureBuffer();IFeatureCursor pFeatureCursor pFeatureClass.Insert(true);for (int i 0; i polylines.Count; i){pFeatureBuffer.Shape polylines[i];pFeatureCursor.InsertFeature(pFeatureBuffer);}pFeatureCursor.Flush();// 返回System.Runtime.InteropServices.Marshal.ReleaseComObject(pFeatureBuffer);System.Runtime.InteropServices.Marshal.ReleaseComObject(pFeatureCursor);return pFeatureClass;}} }运行结果如下图所示 5、结语 本文主要介绍了ArcEngine中提取公共边的实现方法。其实对于第二种方法即利用空间关系和拓扑工具提取公共边我个人是不太满意的因为这是纯粹的暴力解法数据量一旦较多效率肯定是个大问题。可惜不知道ESRI是怎么实现的有了解的同志也可以讲讲这个问题最优的解决方法是什么。
http://www.hkea.cn/news/14436871/

相关文章:

  • 网站策划公司厚街网站建设
  • xml网站地图制作兰州电商网站建设
  • 默认网站建立代写企业软文
  • 没有基础怎么学网站建设广东网页制作网站
  • 网站推广的特点是什么wordpress上传主题没有反应
  • 个人网站建设联系小程序开发平台需要网站吗
  • 网站访问者租车公司网站 模板
  • wordpress自动创建子站老年人做网站
  • 网站怎么做关键词优化网站充值功能怎么做
  • 辽宁建设安装集团有限公司网站网站开发是先做前段还是后台
  • 什么网站可以做会计题目大网站建设规范
  • 中山网站搜索排名长沙行业网站建设费用标准
  • 百度做网站效果怎么样深圳最大的手机市场在什么地方
  • 博客网站做啥好江苏国泰做的网站案例
  • php电子商务网站源码微信小程序推广引流怎么做
  • 天津集团网站建设新版lnmp安装wordpress
  • 苏州手机网站建设公司广东建设监理协会网站
  • 网易考拉的网站建设关键词查询的五种常用工具
  • 郑州 网站 公司朝阳免费网站制作
  • 做网站准备的资料稿定设计手机版下载
  • 网站怎么群发怎么做网站的后台管理系统
  • 哪个网站可以做付邮免费送活动策划大型活动公司
  • 一个公司优化需要做多少个网站做网站的人会留下啥漏洞吗
  • 网站设计的技术选择枣强网址建站
  • 网站站点是什么?如何创建站点?房地产新闻稿
  • 网站建设合同严瑾html企业网站源码下载
  • 个人做跨境电商的平台网站昆山网站开发建设公司
  • 毕业设计做APP好还是网站查看网站是否收录
  • 网站开发教程H5油漆涂料网站建设
  • 飞沐视觉北京网站建设公司茶叶网站建设要求