最近项目开始要用到ArcEngine中的相交分析,网上的图文并茂的文章相当多,写的非常好,这里不做多的转载。只对我在通过相交分析求两个线段的交点时碰到的问题进行一个记录。
ArcEngine中相交分析用到接口为 ITopologicalOperator 这里需要用到它里面的 Intersect方法,功能很强大,能根据两个交的几何图形得到对应的各种交集(点,线,面等)现在我要做两个线段的交集,代码如下:
IPolyline tmpLine1 = new PolylineClass();
tmpLine1.FromPoint = 起点;
tmpLine1.ToPoint = 终点;
IPolyline tmpLine2 = new PolylineClass();
tmpLine2.FromPoint = 起点;
tmpLine2.ToPoint = 终点;
ITopologicalOperator topoOperator = tmpLine1 as ITopologicalOperator;
IGeometry geo = topoOperator.Intersect(tmpLine2 , esriGeometryDimension.esriGeometry0Dimension);
if (!geo.IsEmpty)
{
IPointCollection Pc = geo as IPointCollection;
IPoint Pt = Pc.get_Point(0);
}
网上有很多相似的代码,都是在MapControl中对两条线段进行相交分析,但是我的两个线段是3D下的,结果是相交点的Z属性为NaN,找了好久,以为是有另外的接口像 IRelationalOperator3D 和IRelationalOperator一样,但是确实没有。最后在google看文章时发现了问题所在。除了起点和终点要是三维点外,IPolyline也要打开Z属性。上面的代码需要加上这个:
IZAware zaware = tmpLine1 as IZAware;
zaware.ZAware = true;
两条线都要加,这样再对其做相交分析就能正常得到Z属性了!
分享到:
相关推荐
很完整的空间分析实现代码,并、交、补、缓冲区等等都有
ARCENGINE空间分析
ArcEngine空间分析代码,主要以方法的形式呈现
arcengine空间分析,有一些缓冲,叠加,查询分析
ArcEngine基于C#的开发 ,修改地图路径后就能完整的显示地图的操作功能。
ArcEngine二次开发代码,调试可运行,可实现属性查询、空间查询和统计功能!供初学者练习使用.........
ArcEngine 最短路径分析(C#源码)
访问ArcGIS server服务的ArcEngine网络分析服务,包含路径分析以及路径分析信息展示,包含路径的道路信息以及路径的方向信息,比较全的导航信息.VS2008和VS2010版本。
6. ArcEngine 最短路径分析(源码) 9 7. ArcEngine中使用上下左右键移动地图功能的实现 15 8. 缓冲区的创建 16 9. C#制作鹰眼全过程(引自ESRI中国社区) 18 10. ArcEngine中拓扑的使用- - 20 11. 为什么使用接口编程...
基于arcengine空间查询统计
c#+arcengine 空间查询属性查询c#+arcengine 空间查询属性查询
在ArcEngine的基础上用C#来实现的缓冲区的分析,代码简单易懂,是初学者学习的不错资料。
VB环境中用arcengine库实现缓冲区分析的源代码
基于ArcEngine的GIS软件二次开发 实现地图空间查询功能(通过在地图上画多边形查询所选要素的属性表) 通过画多边形实现空间查询 如果需要通过画直线查询属性,只需将代码注释段 的注释去掉,再将其下面的那段...
ArcEngine 最短路径分析(源码)应用c#语言
vs2010c#开发arcengine实现按属性查询和按位置(空间)查询(类似于arcmap的按位置选择和按属性选择)
用AE(ArcEngine)技术编写的一个擦除工具,实现要素的擦除
韩鹏的ARCENGINE 源韩鹏的ARCENGINE 源代码韩鹏的ARCENGINE 源代码代码