zoukankan      html  css  js  c++  java
  • 使用AO创建平头buffer

    http://www.gisall.com/html/47/122747-2960.html 我们平常使用ITopologicalOperator的buffer是圆角的图形。如下图 但实有时候我们也需要像下面那样的平头buffer的效果。 如何做到这种效果?说一下思路。 下面是使用线去生成这种平头的buffer图形 1.分别使用线的图形向正方向和负方向平移一定的距离,使用IConstructCurve接口可以实现等距偏移 这样可以很好的支持曲线和折线 2.分别把偏移后的两条线的所有节点添加到一个IPointCollection里面 3.用一个PolygonClass去初始化一个IPointCollection,把刚才的所有节点注入此IPointCollection 4.重排IPointCollection的节点次序,将其转换为Polygon。 具体代码如下: /// <summary> /// 平头buffer /// </summary> /// <param name="myLine">用做buffer的线图形</param> /// <param name="bufferDis">buffer的距离</param> /// <returns></returns> /// private IPolygon FlatBuffer(IPolyline myLine, double bufferDis) { object o = System.Type.Missing; //分别对输入的线平移两次(正方向和负方向) IConstructCurve mycurve = new PolylineClass(); mycurve.ConstructOffset(myLine, bufferDis, ref o, ref o); IPointCollection pCol = mycurve as IPointCollection; IConstructCurve mycurve2 = new PolylineClass(); mycurve2.ConstructOffset(myLine, -1 * bufferDis, ref o, ref o); //把第二次平移的线的所有节点翻转 IPolyline addline = mycurve2 as IPolyline; addline.ReverseOrientation(); //把第二条的所有节点放到第一条线的IPointCollection里面 IPointCollection pCol2 = addline as IPointCollection; pCol.AddPointCollection(pCol2); //用面去初始化一个IPointCollection IPointCollection myPCol = new PolygonClass(); myPCol.AddPointCollection(pCol); //把IPointCollection转换为面 IPolygon myPolygon = myPCol as IPolygon; //简化节点次序 myPolygon.SimplifyPreserveFromTo(); return myPolygon; }
  • 相关阅读:
    如何查找YUM安装的JAVA_HOME环境变量详解
    Linux下设置和查看环境变量
    jar包部署脚本
    CentOS7开启防火墙及特定端口
    nohup 命令(设置后台进程): appending output to ‘nohup.out’ 问题
    重点|183道Java面试题可以说很详细了
    JVM性能调优
    【Notepad++】notepad++主题和字体设置(非常好看舒服的)
    spring-boot-maven-plugin 安装本地jar 包
    UserAgentUtils 获取浏览器信息
  • 原文地址:https://www.cnblogs.com/adodo1/p/4327357.html
Copyright © 2011-2022 走看看