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();
简单解释下此代码的意思,其实很简单就是将你的geometry强制转换为简单的几何。
ITopologicalOperator接口的介绍:https://blog.csdn.net/sydbc/article/details/17710235
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)); } }