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

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

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

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

20190128153350291.png

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

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


2019012815364410.png


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

解决办法:

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


20191024163903403.png


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

问题描述:

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


20200729173103783.png

为什么我返回的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));
        }
    }
相关文章
|
6月前
|
C# C++
[记录]c/c++和c#联调常见问题
[记录]c/c++和c#联调常见问题
|
数据库 C++ 索引
c#listbox使用详解和常见问题解决
c#listbox使用详解和常见问题解决
287 0
c#listbox使用详解和常见问题解决
|
Java C# C++
艾伟_转载:C#语言基础常见问题汇总
  概述   1、什么是C#?   C#是Microsoft公司设计的一种编程语言。它松散地基于C/C++,并且有很多方面和Java类似。   Microsoft是这样描述C#的:“C#是从C和C++派生来的一种简单、现代、面向对象和类型安全的编程语言。
1205 0
|
JavaScript 定位技术 API
【c#】Form调用百度地图api攻略及常见问题
           首先,在Form中调用百度地图api,我们需要使用webbrowser控件,这个在前面的文章中已经讲过了,可以参照(http://blog.csdn.net/buptgshengod/article/details/9617177)。         那么接下来就是一些关联性的操作。首先我建议把web的文件放到vs中来进行修改(文件本身以及用到的资源都要存到bin/
1374 0
|
1月前
|
C#
24. C# 编程:用户设定敌人初始血值的实现
24. C# 编程:用户设定敌人初始血值的实现
22 0
|
2月前
|
SQL 数据库连接 应用服务中间件
C#WinForm基础编程(三)
C#WinForm基础编程
79 0
|
2月前
C#WinForm基础编程(二)
C#WinForm基础编程
61 0
|
2月前
|
C# 数据安全/隐私保护
C#WinForm基础编程(一)
C#WinForm基础编程
62 0
|
4月前
|
数据采集 前端开发 C#
C#编程艺术:Fizzler库助您高效爬取www.twitter.com音频
Twitter是全球最大的社交媒体平台之一,包含丰富的音频资源。用户可以在Twitter上发布、转发、评论和收听各种音频内容,如音乐、播客、新闻、故事等,直接从Twitter抓取音频数据并非易事,尤其是在考虑到可能的封锁和反爬虫机制。Twitter会对频繁访问的IP地址进行限制或封禁,以防止恶意爬虫的行为。因此,我们需要使用一些技术手段来规避这些障碍,确保稳定而高效的数据访问。
C#编程艺术:Fizzler库助您高效爬取www.twitter.com音频