/// <summary>
  /// 用拓扑分析求出缓冲区范围。
  /// 由于ArcGIS的问题,有时调用会出异常,因此需要循环调用
  /// </summary>
  /// <param name="oShape">要缓冲区的图形</param>
  /// <param name="dbTolerance">缓冲距离</param>
  /// <returns>生成的缓冲区图形</returns>

  public static IGeometry GetBuffer(IGeometry oShape, double dbTolerance)
  {
   IGeometry oBuffer = null;
   if (oShape == null)
    return oBuffer;
   ITopologicalOperator pTopo = oShape as ITopologicalOperator;
   if (!pTopo.IsSimple) {//如果不是简单图形,进行简化处理
    pTopo.Simplify();
   }

   esriGeometryType iType = oShape.GeometryType;

   //参数不正确
   if (dbTolerance < 0 && iType != esriGeometryType.esriGeometryPolygon)
    return oBuffer;

   int iTry = 0;//尝试10次
   while (oBuffer == null && iTry <= 10) {
    try {

      //如果调用不成功,将缓冲距离加0.01倍再试(如果第10次成功,则缓冲距离比原来大了0.09倍)

      //如果对缓冲距离要求更严格,可以减少增量的倍数

      //根据测试经验,一般最多尝试三次就可以成功
     oBuffer = pTopo.Buffer(dbTolerance * (1.0 + 0.01 * iTry));
    } catch {
     oBuffer = null;
     iTry = iTry + 1;
    }
   }
   return oBuffer;
  }

 

PS:代码并不重要,重要的是思路,变通才是王道,也许是当时本人觉得很有想法,所以把代码给留了下来。

转:ITopologicalOperator Buffer调用异常的解决方法(来源网络)的更多相关文章

  1. ITopologicalOperator Buffer调用异常的解决方法 .异常来自 HRESULT:0x8004023E

    最近在做一个分析功能时,需要循环调用Buffer来对图形创建缓冲区.在开发测试时没问题,但拿到客户实际使用时,出现异常. 后来把出异常的数据拿来测试,发现在调用Buffer时出错.但做为参数传入的图形 ...

  2. 多线程访问winform控件出现异常的解决方法

    一.  多线程访问winform控件出现异常的解决方法 1.  问题描述<1> 如果创建某控件的线程之外的其他线程试图调用该控件,则会引发一个 InvalidOperationExcept ...

  3. SSH乱码和Xshell异常断开解决方法

    一.SSH Secure Shell Client中文乱码的解决方法 这是SSH Secure Shell Client多年未解决的短板,要求客户端和服务器端都要‘UTF-8’编码,我终于知道Wind ...

  4. java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result异常的解决方法

    今天在写一个JAVA程序的时候出现了异常:java.lang.ArithmeticException: Non-terminating decimal expansion; no exact repr ...

  5. Maven常见异常及解决方法

    异常1: [ERROR] Failed to execute goal on project biz_zhuhai: Could not resolve dependencies for projec ...

  6. VS2010中GetMenu()和GetSubMenu(0)为NULL引发异常的解决方法 及添加方法

    对于前面问题的分析:来源于http://blog.163.com/yuyang_tech/blog/static/216050083201211144120401/ 解决方法1: //来源:http: ...

  7. maven常见异常以及解决方法

    本文写的是我在整合ssm框架时遇到的一些问题,我估计很多人也会遇到,所以,这里作为一个总结,希望能够帮助大家解决问题 一,加入shiro组件时抛出的异常 加入步骤(略) 问题 1,保存后,无法导入sh ...

  8. Emgu CV的一个异常的解决方法

    今年组里有大项目落我头上了,并不能像去年一样回家还能搞搞Cocos2dX,一把老泪流了下来... 回到正题,由于组里需要做一个显示板的自动测试项目,涉及到Computer Vision.不得不说,这才 ...

  9. 某APK中使用了动态注册BroadcastReceiver,Launcher中动态加载此APK出现java.lang.SecurityException异常的解决方法

    在某APK中,通过如下方法动态注册了一个BroadcastReceiver,代码参考如下: @Override protected void onAttachedToWindow() { super. ...

随机推荐

  1. Eclipse的一下设置

    一.设置自动补全 1.打开 Eclipse -> Window(窗口) -> Perferences(首选项) 2.点开java->Editor(编辑器)->Content A ...

  2. pkg-config 切换opencv版本

    查看当前版本 pkg-config --modversion opencv 在~/.bashrc最后添加如下内容: CMAKE_INSTALL_PREFIX=/usr/local/opencv3 ex ...

  3. python获取函数参数默认值的两种方法

    1.使用函数的__defaults__魔术方法 demo: # coding=utf-8 def f(a,b,c=1): pass f.__defaults__ 输出结果: (1,) 2.使用insp ...

  4. .Net Core 使用swagger UI

    swagger UI 第一步:首先添加包Swashbuckle.AspNetCore (可通过微软添加包命令Install-Package 包名进行添加,也可以通过管理NuGet程序包进行添加) 第二 ...

  5. N1 Armbian 安装 OpenMediaVault

    前言 接上一篇继续折腾,这次在 N1 上进行一些本地化设置并安装使用 OpenMediaVault 步骤 使用 ssh 连接到 N1,修改系统源 cd /etc/apt cp sources.list ...

  6. 老男孩python作业4-ATM程序开发

    实现一个ATM + 购物商城程序: 额度 15000或自定义 实现购物商城,买东西加入 购物车,调用信用卡接口结账 可以提现,手续费5% 支持多账户登录 支持账户间转账 记录每月日常消费流水 提供还款 ...

  7. linux 查看当前目录下包含某个字符串的文件

    $ grep -rn '字符串' 很好用~

  8. bzoj4034 树上操作 树链剖分+线段树

    题目传送门 题目大意: 有一棵点数为 N 的树,以点 1 为根,且树点有权.然后有 M 个操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a . 操作 2 :把某个节点 x 为根的子树中所有 ...

  9. 去掉小程序button元素的边框

    button::after {     display:none }

  10. 网络那点事之socket队列

    1.socket 在内核中是怎么表示的,怎么与文件系统建立关系 2.socket在什么时候创建了接收队列,接收队列的长度是怎么确定的 3.接收到一个数据包根据怎么找到到接收队列的 使用hash算法,分 ...