基于C#的ArcEngine二次开发47:Addins常见问题解决方案集锦

 

1.arcgis  自定义工具中找不到Addin control

 解决办法:是由于创建的addin程序的.netFramework版本不一致导致,设置为一致即可

2.addin 断点无法调试:提示当前不会命中断点,还没有为该文档加载任何符号

 解决办法:ESRI系列的软件启动时默认并不支持.NET4.0,而是.NET2.0,所以需要修改arcgis安装目录下的的bin下面的文件

3 Unable to create .esriAddin; missing ESRI ArcGIS Add-in SDK component(s).  

解决办法:

  打开.csproj项目文件,修改如图位置:添加 .11

4 The operation cannot be performed on a non-simple geometry.

问题描述:

在调用的ITopologicalOperator.Cut()函数时,报了如下错误:

为什么我返回的geometry不是简单的几何呢?

本人猜测是因为返回来的坐标顺序的问题,即你是逆时针绘制图形还是顺时针绘制图形的问题,故造成虽然你绘制了几何图形,但是实际上连接顺序不一致。

解决方案:

对你传入的geometry进行检查,在你应用此geometry之前应该执行此代码:

((ITopologicalOperator)pGeometry).Simplify();

5 ArcMap并不包含Editor的定义

错误原因:在程序中使用了如下语句

IEditor pEditor = ArcMap.Editor;

解决方案:将上述语句修改为

IEditor pEditor = ArcMap.Application.FindByExtensionByName("ESRI Object Editor")  as IEditor;

6 面积为负的几何图形处理

面积为负与节点的顺时针和逆时针有关系,正常的图形外环应为顺时针,内环为逆时针;可以调用反转操作函数解决该问题。

IArea pArea = pPolygon as IArea;
if(pArea < 0)
{
    pPolygon.ReverseOrientation();
}

官方示例代码:

public void ReverseOrientation(IFeatureClass featureClass, int oidToEdit)
    {
        IFeature feature = featureClass.GetFeature(oidToEdit);
        if (feature.Shape.GeometryType == esriGeometryType.esriGeometryPolygon)
        {
            IArea area = feature.Shape as IArea;
            double beforeReverse = area.Area;
            ICurve curve = feature.Shape as ICurve;

            curve.ReverseOrientation();

            double afterReverse = area.Area;
            System.Windows.Forms.MessageBox.Show(String.Format("The polygon area is originally {0}, after the orientation was reversed the area is {1}.",beforeReverse,afterReverse));
        }
    }

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小薛引路

喜欢的读者,可以打赏鼓励一下

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值